home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / dev / e / amigae21b.lha / Amiga_E_v2.1b / Sources / Utilities / QuickLaunch.e < prev    next >
Text File  |  1992-09-02  |  2KB  |  71 lines

  1. /* QuickLaunch */
  2.  
  3. MODULE 'intuition/intuition'
  4.  
  5. CONST MAXLAUNCH=12
  6. CONST MAXGADGETS=MAXLAUNCH*GADGETSIZE
  7. CONST IDCMPF=IDCMP_CLOSEWINDOW+IDCMP_GADGETUP
  8.       
  9. DEF window,nrgad=0,next,gl[MAXGADGETS]:ARRAY,outf=TRUE,class
  10.  
  11. PROC main()
  12.   next:=Gadget(gl,NIL,1,3,10,14,100,'Output')
  13.   next:=Gadget(next,gl,2,0,120,14,100,'About')
  14.   IF readfile()=FALSE
  15.     WriteF('Could not read config file correctly!\n')
  16.   ELSE
  17.     window:=OpenW(205,16,230,nrgad*14+48,IDCMPF,$100E,'QuickLaunch',0,1,gl)
  18.     IF window=NIL
  19.       WriteF('Could not open window!\n')
  20.     ELSE
  21.       Colour(2,0)
  22.       TextF(10,37,'Ready for takeoff ...     ')
  23.       REPEAT
  24.         class:=WaitIMessage(window)
  25.         IF class=IDCMP_GADGETUP THEN dogadgets()
  26.       UNTIL class=IDCMP_CLOSEWINDOW
  27.       CloseW(window)
  28.     ENDIF
  29.   ENDIF
  30. ENDPROC
  31.  
  32. PROC readfile()
  33.   DEF len,a,adr,buf,handle,name,flen=TRUE
  34.   name:='S:QuickLaunch.Config'
  35.   IF (flen:=FileLength(name))=-1 THEN RETURN
  36.   IF (buf:=New(flen+1))=NIL THEN RETURN
  37.   IF (handle:=Open(name,1005))=NIL THEN RETURN
  38.   len:=Read(handle,buf,flen)
  39.   Close(handle)
  40.   IF len<1 THEN RETURN
  41.   adr:=buf
  42.   FOR a:=0 TO len-1
  43.     IF buf[a]=10
  44.       buf[a]:=0
  45.       IF adr=0
  46.         adr:=buf+a+1
  47.       ELSE                    /* id=pathadr */
  48.         IF nrgad++=MAXLAUNCH THEN RETURN
  49.         next:=Gadget(next,gl,buf+a+1,0,10,nrgad*14+30,210,adr)
  50.         adr:=0
  51.       ENDIF
  52.     ENDIF
  53.   ENDFOR
  54. ENDPROC TRUE
  55.  
  56. PROC dogadgets()
  57.   DEF gadget,object:PTR TO gadget
  58.   object:=MsgIaddr()
  59.   gadget:=object.userdata
  60.   IF gadget=1
  61.     outf:=Not(outf)
  62.   ELSEIF gadget=2
  63.     TextF(10,37,'Written in Amiga E by $#%!')
  64.   ELSE
  65.     IF outf THEN WriteF('')        /* force window if stdout=0 */
  66.     TextF(10,37,'Launching ... \l\s[12]',gadget)
  67.     Execute(gadget,0,stdout)
  68.     TextF(10,37,'Done.                     ')
  69.   ENDIF
  70. ENDPROC
  71.